var querystring = require("querystring"),
  fs = require("fs"),
	formidable = require("formidable");

function start(response) {
  console.log("hellonodejs/requestHandlers: Request handler 'start' was called.");

  var body = '<html>'+
    '<head>'+
    '<meta http-equiv="Content-Type" '+
    'content="text/html; charset=UTF-8" />'+
    '</head>'+
    '<body>'+
    '<form action="/upload" enctype="multipart/form-data" '+
    'method="post">'+
    '<input type="file" name="upload">'+
    '<input type="submit" value="Upload file" />'+
    '</form>'+
    '</body>'+
    '</html>';


  response.writeHead(200, {"Content-Type": "text/html"});
  response.write(body);
  response.end();
}

function upload(response, request) {
  console.log("hellonodejs/requestHandlers: Request handler 'upload' was called.");
  
  var form = new formidable.IncomingForm();

  form.keepExtensions = true;
  form.uploadDir = __dirname /*+ '/static/upload/photos/'*/;
  form.on ('fileBegin', function(name, file){
    file.path = form.uploadDir + "/" + file.name;
  })
  console.log("hellonodejs/requesHandlers: upload about to parse");
  form.parse(request, function(error, fields, files) {
	console.log("hellonodejs/requestHandlers: upload parsing done");

	response.writeHead(200, {"Content-Type": "text/html"});
	response.write("received image:<br/>");
	response.write("<img src='/show' />");
	response.end();
  });
}
		
function show(response) {
  console.log("hellonodejs/requestHandlers: Request handler 'show' was called.");
  fs.readFile(file.path, "binary", function(error, file) { /*file.path вместо "/node/hellonodejs/miniloh.jpg" не работает!*/
    if(error) {
      response.writeHead(500, {"Content-Type": "text/plain"});
      response.write(error + "\n");
      response.end();
    } else {
      response.writeHead(200, {"Content-Type": "image/png"});
      response.write(file, "binary");
      response.end();
    }
  });
}

exports.start = start;
exports.upload = upload;
exports.show = show;